home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 351-375 / 359 / dice / dice.lzh / lib / amiga / parseargs.c < prev    next >
C/C++ Source or Header  |  1990-03-27  |  886b  |  65 lines

  1.  
  2. /*
  3.  *  PARSEARGS.C
  4.  *
  5.  *  (c)Copyright 1990, Matthew Dillon, All Rights Reserved
  6.  */
  7.  
  8. #include <stdio.h>
  9.  
  10. /*
  11.  *  Returns argc for arguments.  Does NOT include arg0
  12.  */
  13.  
  14. int
  15. _parseargs1(copy, len)
  16. char *copy;
  17. int len;
  18. {
  19.     int ac = 0;
  20.  
  21.     for (;;) {
  22.     while (*copy == ' ' || *copy == 9)
  23.         ++copy;
  24.     if (*copy == 0 || *copy == 0x0A)
  25.         break;
  26.     ++ac;
  27.     if (*copy == '\"') {
  28.         do {
  29.         ++copy;
  30.         } while (*copy && *copy != '\"');
  31.     } else {
  32.         while (*copy && *copy != 0x0A && *copy != ' ' && *copy != 9)
  33.         ++copy;
  34.     }
  35.     if (*copy == 0)
  36.         break;
  37.     *copy++ = 0;
  38.     }
  39.     return(ac);
  40. }
  41.  
  42. /*
  43.  *  Dumps 'ac' arguments into av beginning at index 0.
  44.  */
  45.  
  46. void
  47. _parseargs2(copy, av, ac)
  48. char *copy;
  49. char **av;
  50. int ac;
  51. {
  52.     while (ac) {
  53.     while (*copy == ' ' || *copy == 9)
  54.         ++copy;
  55.     if (*copy == '\"')
  56.         ++copy;
  57.     *av++ = copy;
  58.     while (*copy)
  59.         ++copy;
  60.     ++copy;
  61.     --ac;
  62.     }
  63. }
  64.  
  65.